function formatTime(date) {
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

/**
 * 把格式化日期字符串转化为时间戳
 * yy-mm-ddd 转换为时间戳
 */
function stringToTime(dateString) {
  var timeS = Date.parse(new Date(dateString)) //转换为时间戳 毫秒
  var timesS = timeS / 1000
  return timesS
}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

/** 
 * 时间戳转化为年 月 日 时 分 秒 
 * number: 传入时间戳 
 * format：返回格式，支持自定义，但参数必须与formateArr里保持一致 
 */
function formatTimeTwo(number, format) {

  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];

  var date = new Date(number * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));

  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}

// 时间格式化输出，如11:03 25:19 每1s都会调用一次
function dateformat(micro_second) {
  // 总秒数
  var second = Math.floor(micro_second);
  // 天数
  var day = Math.floor(second / 3600 / 24);
  // 小时
  var hr = Math.floor(second / 3600 % 24);
  // 分钟
  var min = Math.floor(second / 60 % 60);
  // 秒
  var sec = Math.floor(second % 60);
  return min + ":" + sec;
}

/**
 * 计算两个日期之间的时间差
 * -不隔夜状态
 */
function dateTimeDifferenceNotOvernight(checkInDate, checkOutDate) {
  return this.dateTimeDifferenceOvernight(checkInDate, checkOutDate) + 1;
}

/**
 * 计算两个日期之间的时间差
 * -隔夜状态
 */
function dateTimeDifferenceOvernight(checkInDate, checkOutDate) {
  //获取起始时间的毫秒数  	 
  //其中dateString1.replace('/-/g','/')是将日期格式为yyyy-mm-dd转换成yyyy/mm/dd  
  //Date.parse()静态方法的返回值为1970年1月1日午时到当前字符串时间的毫秒数，返回值为整数  
  //如果传入的日期只包含年月日不包含时分秒，则默认取的毫秒数为yyyy/mm/dd 00:00:00  
  //取的是0时0分0秒的毫秒数，如果传入的是2015/07/03 12:20:12则取值为该时间点的毫秒数  
  var startDate = Date.parse(checkInDate.replace('/-/g', '/'));
  var endDate = Date.parse(checkOutDate.replace('/-/g', '/'));
  //因为不传时分秒的时候 默认取值到dateString2的0时0分0秒时的毫秒数，这样就不包含当前天数的毫秒数  
  //如果计算时要包含日期的当前天，就要加上一天的毫秒数，我的业务需要，将加上了。
  var diffDate = (endDate - startDate)
  //计算出两个日期字符串之间的相差的天数  
  var days = diffDate / (1 * 24 * 60 * 60 * 1000);
  return days;
}

/**
 * 日期格式转换：
 * 将年-月-日 转换为 month月day日
 */
function dateToString(date) {
  var dateA = date
  if (date.indexOf('-')) {
    var dateString = date.split('-')
    if (parseInt(dateString[1]) < 10) {
      if (date.indexOf('0')) {
        dateString[1] = dateString[1].split('0')[1]
      }
    }
    dateA = dateString[1] + '月' + dateString[2] + '日'
  }
  return dateA
}

module.exports = {
  formatTime: formatTime, // 日期转时间戳
  formatTimeTwo: formatTimeTwo, // 时间戳转日期
  dateTimeDifferenceNotOvernight: dateTimeDifferenceNotOvernight,
  dateTimeDifferenceOvernight: dateTimeDifferenceOvernight,
  dateToString: dateToString,
  stringToTime: stringToTime
}